How to make Digital clock with Arduino and LCD display

Arduino Digital Clock Project

Components Required

About 16x2 LCD Display

The name "16x2 LCD display" comes from the fact that it has 16 columns and 2 rows, meaning we can display 32 characters on this screen. Characters can be alphabets, numbers, or custom-made characters. Each column is made from a 5x8 matrix of pixels (40 pixels per column).

Pinouts

LCD Display Interfacing with Arduino

VSS and LED- are grounded. VCC and LED+ connect to Arduino’s 5V. A Preset is connected to VEE to adjust contrast. LCD pins are connected as follows:

Toggle switch connections:

Circuit Diagram

Circuit Diagram

Arduino Code


#include <LiquidCrystal.h>
LiquidCrystal lcd(6, 7, 8, 9, 10, 11, 12);
unsigned long currentTime = 0, previousTime = 0;
int seconds = 0, minuites = 0, hours = 0, setmins = A0, sethrs = A1;
void setup()
{
  pinMode(setmins, INPUT);
  pinMode(sethrs, INPUT);
  lcd.begin(16, 2);
}

void loop()
{
  currentTime = millis();
  if (currentTime - previousTime >= 1000)
  {
    lcd.clear();
    previousTime = currentTime;
    seconds++;
  }
  if (seconds == 60)
  {
    minuites++;
    seconds = 0;
  }
  if (minuites == 60)
  {
    hours++;
    minuites = 0;
  }
  if (hours == 24)
  {
    hours = 0;
  }
  lcd.setCursor(0, 0);
  lcd.print("Time:");
  lcd.print(hours);
  lcd.print(":");
  lcd.print(minuites);
  lcd.print(":");
  lcd.print(seconds);
  if (digitalRead(setmins) == HIGH)
  {
    minuites++;
    while (digitalRead(setmins));
  }
  if (digitalRead(sethrs) == HIGH)
  {
    hours++;
    while (digitalRead(sethrs));
  }
}